#include<bits/stdc++.h>
#define int long long
using namespace std;
const int B=63,mod=999999999;
int n,q,op,a,b,c,d,ar[4010][4010],sum1[80][80],sum2[80][4010],sum3[80][4010];
inline void work(int &x,int op,int v){
	if(op==1) x&=v;
	else if(op==2) x|=v;
	else if(op==3) x^=v;
	else x=(x+v)%mod;
}
inline void upd(int x,int y,int v){
	sum1[x/B][y/B]+=v,sum2[x/B][y]+=v,sum3[y/B][x]+=v;
}
signed main(){
	freopen("fire.in","r",stdin);
	freopen("fire.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>q;
	while(q--){
		cin>>op;
		if(op==1){
			cin>>a>>b>>c>>d;
			if(a==0){
				for(int i=1;i<=n;i++){
					int lst=ar[b][i];
					work(ar[b][i],c,d),upd(b,i,ar[b][i]-lst);
				}
			}else{
				for(int i=1;i<=n;i++){
					int lst=ar[i][b];
					work(ar[i][b],c,d),upd(i,b,ar[i][b]-lst);
				}
			}
		}else{
			cin>>a>>b;
			int ans=0;
			for(int i=0;i<a/B;i++)
				for(int j=0;j<b/B;j++)
					ans+=sum1[i][j];
			for(int i=0;i<a/B;i++)
				for(int j=b/B*B;j<=b;j++)
					ans+=sum2[i][j];
			for(int i=0;i<b/B;i++)
				for(int j=a/B*B;j<=a;j++)
					ans+=sum3[i][j];
			for(int i=a/B*B;i<=a;i++)
				for(int j=b/B*B;j<=b;j++)
					ans+=ar[i][j];
			cout<<ans<<"\n";
		}
	}
	return 0;
}